package com.group1.bookmanagement.service;

import java.util.List;

import com.group1.bookmanagement.domain.Book;
import com.group1.bookmanagement.domain.Label;
import com.group1.bookmanagement.domain.PageBean;
import com.group1.bookmanagement.domain.User;

public interface BookService {

	/**
	 * 新增
	 * @param book
	 */
	void saveBook(Book book);
	
	/**
	 * 删除
	 * @param book
	 */
	void deleteBook(Book book);
	
	/**
	 * 修改
	 * @param book
	 */
	void updateBook(Book book);
	
	/**
	 * 查询
	 * @param id
	 * @return
	 */
	Book getBook(Integer id);
	
	/**
	 * 查询所有
	 * @param page 页数
	 * @return
	 */
	PageBean<Book> listBook(Integer page);
	
	/**
	 * 按标签分类
	 * @param label
	 * @param page
	 * @return
	 */
	PageBean<Book> listByLabel(Label label, Integer page);
	
	/**
	 * 按某种规则排序并且返回前几条数据
	 * @param limit 返回数据条数
	 * @param property 属性
	 * @param order 顺序(正序或倒序)
	 * @return
	 */
	List<Book> top(Integer limit, String property, String order);
	
	/**
	 * 列出用户关注的标签下的所有书籍
	 * @param user
	 * @return
	 */
	List<Book> listBook(User user);
}
